using System;
using System.Collections.Generic;
using System.Text;
using MySql.Data.MySqlClient;
using NEX_Datos;
using System.Data;

namespace NEXServicio
{
    public class ServicioTema: ServicioPadre
    {
        #region Contantes

        public const String DataTableName = "Tema";

        #endregion

        #region Metodos publicos
        public static DataSet Obtener(int idTema, Guid guidTema)
        {
            DataSet ds = new DataSet();
            ds.Locale = System.Globalization.CultureInfo.CurrentCulture;
            using (MySqlCommand cmd = UtilidadAD.CreateSqlCommand())
            {
                cmd.CommandText = "TemaTraer";
                SetearConNulo("p_idTema", cmd, MySqlDbType.Int32, idTema);
                SetearConNulo("p_guidTema", cmd, MySqlDbType.VarChar, guidTema);

                using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
                {
                    da.Fill(ds);
                }
            }
            ds.Tables[0].TableName = ServicioPais.DataTableName;

            return ds;
        }

        public static DataSet Listar()
        {
            return ServicioTema.ListarPrivado(null, "");
        }

        public static DataSet Listar(Boolean activo)
        {
            return ServicioTema.ListarPrivado(activo, "");
        }
        public static DataSet ListarPorLibro(Int32 idLibro)
        {
            return ServicioTema.ListarPorLibroPrivado(idLibro);
        }
        #endregion

        #region Metodos privados
        private static DataSet ListarPrivado(Object activo, String descripcion)
        {
            DataSet ds = new DataSet();
            ds.Locale = System.Globalization.CultureInfo.CurrentCulture;
            using (MySqlCommand cmd = UtilidadAD.CreateSqlCommand())
            {
                cmd.CommandText = "TemaTraer";
                SetearConNulo("p_activo", cmd, MySqlDbType.Bit, activo);
                SetearConNulo("p_descripcion", cmd, MySqlDbType.VarChar, descripcion);
                //cmd.CommandText = "Pais_Listar";

                using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
                {
                    da.Fill(ds);
                }
            }
            ds.Tables[0].TableName = ServicioTema.DataTableName;
            return ds;
        }
        private static DataSet ListarPorLibroPrivado(Int32 idLibro)
        {
            DataSet ds = new DataSet();
            ds.Locale = System.Globalization.CultureInfo.CurrentCulture;
            using (MySqlCommand cmd = UtilidadAD.CreateSqlCommand())
            {
                cmd.CommandText = "LibroTemaTraer";
                SetearConNulo("p_idLibro", cmd, MySqlDbType.Int32, idLibro);
                using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
                {
                    da.Fill(ds);
                    cmd.Connection.Close();
                }
            }
            ds.Tables[0].TableName = ServicioTema.DataTableName;
            
            return ds;
        }
        

        #endregion

        #region Metodos para Salvar
        public static void SalvarTemaLibro(Transaccion transaccion, int idLibro, String valores)
        {
            if (transaccion == null)
            {
                throw new ArgumentNullException("transaccion");
            }
            using (MySqlCommand cmd = transaccion.SqlCommandObtener())
            {
                cmd.CommandText = "TemaLibroSalvar";
                cmd.Parameters.Add("p_idLibro", MySqlDbType.Int32).Value = idLibro;
                cmd.Parameters.Add("p_valores", MySqlDbType.VarChar).Value = valores ;                
                cmd.ExecuteNonQuery();
            }
        }
        #endregion
    }
}
